package com.zpark.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.zpark.entity.patients.Patients;
import com.zpark.utils.ResultVO;

public interface PatientsService extends IService<Patients> {

    /**
     * 患者注册
     * @param patient 患者实体(包含用户名、密码、昵称等字段)
     * @return 注册结果(包含注册成功的患者信息)
     */
    ResultVO<Patients> register(Patients patient);

    /**
     * 患者登录
     * @param username 用户名
     * @param password 密码(明文)
     * @return 登录结果(包含生成的token)
     */
    ResultVO<String> login(String username, String password);

    /**
     * 更新患者信息
     * @param patient 包含更新信息的患者实体(可更新姓名、头像、联系方式等)
     * @return 更新结果(包含更新后的患者信息)
     */
    ResultVO<Patients> updatePatientInfo(Patients patient);

    /**
     * 修改密码
     * @param patientsId 患者ID
     * @param oldPassword 原密码(明文)
     * @param newPassword 新密码(明文)
     * @return 修改结果
     */
    ResultVO<Void> changePassword(Integer patientsId, String oldPassword, String newPassword);

    /**
     * 更新患者状态
     * @param patientsId 患者ID
     * @param status 新状态(0-禁用，1-激活)
     * @return 更新结果
     */
    ResultVO<Void> updateStatus(Integer patientsId, Integer status);

    /**
     * 根据用户名查询患者信息
     * @param username 用户名
     * @return 患者信息
     */
    Patients getByUsername(String username);

}
